属性查询 Sample详情

最后更新时间:2019年7月5日

属性条件查询,即为属性关键字查询,根据选择图层、字段、关键字对图层要素进行查询并显示查询结果。通过结果要素可获取其空间信息与属性信息,根据应用需求解析结果,并选择适合的方式展现。属性查询与空间查询整体思路一致,大部分步骤也相同,主要区别在于属性查询不需要设置空间范围条件,需设置属性过滤条件。

1

准备查询图层数据

与空间查询类似,首先需准备待查询的图层数据。

//获取地图对象
MGSMap *map=_mapView.map;
//根据图层名称获取其索引值
long layerIndex=[map indexOfName:@"水域"];
//获取矢量图层
MGSVectorLayer *vectorLayer=(MGSVectorLayer *)[map getLayerAtIndex:layerIndex];

2

创建查询对象并设置参数

创建查询对象,为其设置构造的查询属性条件等参数。

//通过矢量图层创建查询对象
MGSFeatureQuery *featureQuery=[[MGSFeatureQuery alloc] initWithVectorLayer:vectorLayer];
//设置属性查询条件,根据想要查询的字段、关键字、属性条件,构造SQL查询语句
[featureQuery setWhereClause:@"Name LIKE '%公园%'"];
//设置每页结果数目,默认为10
[featureQuery setPageSize:20];

3

查询

执行查询操作,并获取查询结果。

//进行要素查询
MGSFeaturePagedResult *queryResult=[featureQuery query];
//分页获取要素数组
for (int i=1; i<=queryResult.pageCount; i++) {
    //注意getPageWithPageNumber是从1开始的
    NSArray<MGSFeature *> *featureArray=[queryResult getPageWithPageNumber:i];
    //对每一页获取要素
    for (int j=0; j<[featureArray count]; j++) {
        //获取要素
        MGSFeature *feature=featureArray[j];
    }
}

4

结果展示

解析查询返回的结果要素,可通过标注、列表等形式展示给用户。

//将要素转化成图形
NSArray<MGSGraphic *> *graphicArray=[feature toGraphicsWithAttributes:YES];
//绘制图形
[_mapView.graphicsOverlay addGraphics:graphicArray];
[_mapView refresh];

//额外操作:根据需要执行
//获取要素的属性:键值对的形式
NSDictionary<NSString *,NSString *> *attribute = [_modifyFeature attributes];
//获取要素的几何对象:可判断要素几何对象类型,进而得到相关信息:长度、面积等
MGSGeometry *geometry=[feature geometry];
//获取要素的几何信息:可获取颜色、填充符号、点大小等等
MGSGeomInfo *geomInfo=[feature info];

实现效果如下图所示:

属性查询.jpg